package 整数;

/**
 * @author: 大怪
 * @email: 962527441@qq.com
 */

/**
 * 题目：
 * 给定两个 01 字符串 a 和 b ，请计算它们的和，并以二进制字符串的形式输出。
 * 输入为 非空 字符串且只包含数字 1 和 0。
 *
 *示例 1:
 * 输入: a = "11", b = "10"
 * 输出: "101"
 *
 */
public class 二进制加法 {
    class Solution {
        public String addBinary(String a, String b) {
            int len1 = a.length()-1;
            int len2 = b.length()-1;
            int t = 0;
            StringBuffer sb = new StringBuffer();
            while(len1>=0 || len2 >= 0) {
                int a1 = len1>=0? a.charAt(len1--)-'0':0;
                int b1 = len2>=0? b.charAt(len2--)-'0':0;
                int sum = a1+b1+t;
                t = sum >=2?1:0;
                sum = sum>=2?sum -2:sum;
                sb.append(sum);
            }
            if (t==1) {
                sb.append(1);
            }
            return sb.reverse().toString();
        }
    }
}
